// 2015年版权所有etcd作者
// 
// 根据Apache许可证2.0版（以下简称“许可证”）获得许可；
// 除非遵守许可证，否则不得使用此文件。
// 您可以通过
// 
// www.apache.org/licenses/LICENSE-2.0 
// 
// 除非适用法律要求或书面同意，否则根据许可证分发的软件
// 按“原样”分发，
// 无任何明示或暗示的保证或条件。
// 请参阅许可证，了解管理许可的特定语言和
// 许可证下的限制。

/*
Package client provides bindings for the etcd APIs.

Create a Config and exchange it for a Client:

	import (
		"net/http"
		"context"

		"go.etcd.io/etcd/client/v2"
	)

	cfg := client.Config{
		Endpoints: []string{"http:// 127.0。0.1:2379“}，
		Transport: DefaultTransport,
	}

	c, err := client.New(cfg)
	if err != nil {
		// 处理错误
	}

Clients are safe for concurrent use by multiple goroutines.

Create a KeysAPI using the Client, then use it to interact with etcd:

	kAPI := client.NewKeysAPI(c)

	// 创建一个值为“bar”的新键/foo 
	_, err = kAPI.Create(context.Background(), "/foo", "bar")
	if err != nil {
		// 处理错误
	}

	// 仅当值仍为“bar”时删除新创建的键“
	_, err = kAPI.Delete(context.Background(), "/foo", &DeleteOptions{PrevValue: "bar"})
	if err != nil {
		// 处理错误
	}

Use a custom context to set timeouts on your operations:

	import "time"

	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()

	// 设置新密钥，忽略其以前的状态
	_, err := kAPI.Set(ctx, "/ping", "pong", nil)
	if err != nil {
		if err == context.DeadlineExceeded {
			// 请求花费的时间超过5s 
		} else {
			// 处理错误
		}
	}

*/
package client
